package cn.wolfcode.trip.base.service;

import cn.wolfcode.trip.base.domain.Travel;
import cn.wolfcode.trip.base.domain.TravelContent;
import cn.wolfcode.trip.base.query.TravelQueryObject;
import cn.wolfcode.trip.base.query.ViewQueryObject;
import com.github.pagehelper.PageInfo;

import java.util.List;

/**
 * @author by mycp
 * @Classname ITravelService
 * @Description TODO 游记crud接口
 * @Date 2018/11/4 12:54
 */
public interface ITravelService {

    /**
     * 分页查询游记
     * @param qo
     * @return
     */
    PageInfo queryTravel(TravelQueryObject qo);

    /**
     * 保存 / 更新游记信息
     * @param entity
     */
    void saveOrUpdate(Travel entity);

    /**
     * 查询指定的游记
     * @param id
     * @return
     */
    Travel get(Long id);


    /**
     * 根据游记id查询指定的游记富文本内容
     * @param travelId
     * @return
     */
    TravelContent getTravelContentById(Long travelId);

    /**
     * 更改游记状态 拒绝 / 发布
     * @param id
     * @param state
     */
    void changeTravelState(Long id, Integer state);

    /**
     * 分页查询游记--APP端
     * @param qo
     * @return
     */
    PageInfo queryTravelForApp(TravelQueryObject qo);

    /**
     * 查询指定作者的游记数量
     * @param authorId 作者id
     * @return
     */
    Integer count(Long authorId);

    /**
     * 根据大攻略,以及浏览量查询游记
     * @param strategyId
     * @param qo
     * @return
     */
    List<Travel> getTravel(Long strategyId);
}
